package com.zy.service.impl;

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

import org.joda.time.DateTime;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import com.zy.common.util.FtpUtil;
import com.zy.service.PictureService;

@Service
public class PictureServiceImpl implements PictureService {
	// 取出相关数据
	@Value("${FTP_ADDRESS}")
	private String FTP_ADDRESS;//IP地址
	@Value("${FTP_PORT}")
	private Integer FTP_PORT;//端口号
	@Value("${FTP_USER_NAME}")
	private String FTP_USER_NAME;//用户名
	@Value("${FTP_PASSWORD}")
	private String FTP_PASSWORD;//密码
	@Value("${FTP_BASE_PATH}")
	private String FTP_BASE_PATH;//基础目录
	@Value("${IMAGE_BASE_URL}")
	private String IMAGE_BASE_URL;//图片服务器路径

	/*
	 * 图片上传-----上传到图片服务器中
	 */
	@Override
	public Map<String, Object> upLoadFile(MultipartFile uploadFile) throws IOException {
		// 1.对原文件名进行处理，避免发生覆盖
		// 获取原文件名
		String originalFilename = uploadFile.getOriginalFilename();
		// 截取文件后缀，例如ajpg.jpg ------> .jpg
		String substring = originalFilename.substring(originalFilename.lastIndexOf("."));
		// 生成随机id当作文件名，保证不重复
		String string = UUID.randomUUID().toString();
		// 组成新的文件名
		String newName = string + substring;
		// 得到文件输入流
		InputStream inputStream = uploadFile.getInputStream();
		// 将上传图片的文件夹按照日期排列
		String imagePath = new DateTime().toString("yyyy/MM/dd");
		// 上传
		boolean b = FtpUtil.uploadFile(FTP_ADDRESS, FTP_PORT, FTP_USER_NAME, FTP_PASSWORD, FTP_BASE_PATH, imagePath,
				newName, inputStream);
		HashMap<String, Object> hashMap = new HashMap<>();
		if (b) {
			hashMap.put("error", 0);
			hashMap.put("url", IMAGE_BASE_URL + "/" + imagePath + "/" + newName);
		} else {
			hashMap.put("error", 1);
			hashMap.put("message", "上传失败！");
		}
		return hashMap;
	}

	public static void main(String[] args) {
		String path = new DateTime().toString("yyyy/MM/dd");
		System.out.println(path);
	}

}
